Technical Q&A QA1216
How do I use PMSessionGetGraphicsContext to get a CGContextRef?


Q: PMSessionGetGraphicsContext Çégópǵǃ CGContextRef ÇéÊìæÇ∑ÇÈÇ…ÇÕǫǧǵÇΩÇÁÇÊÇ¢Ç≈ǵÇÂǧǩÅH

A: Carbon Printing Manager Reference Çà PMSessionSetDocumentFormatGeneration API ÇÃê‡ñæÇ…džÇÈÇÊǧDžÅAPMSessionGetGraphicsContext Ç™ CGContextRef Çï‘Ç∑ÇΩÇflÇ…ÇÕÅAPMSessionBeginDocument ÇåƒÇ—èoÇ∑ëOÇ…ÅAkPMGraphicsContextCoreGraphics ÇÃÉRÉìÉeÉLÉXÉgÉ^ÉCÉvÇéwíËǵǃ PMSessionSetDocumentFormatGeneration ÇåƒÇ—èoǵÅAǪÇÃå„Ç≈ PMSessionBeginPage ÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBCGContextRef ÇÃç¿ïWånÅiÉyÅ[ÉWÇÃç∂â∫ã˜ÇãNì_ÇΔǵÅAÉCÉÅÅ[ÉWâ¬î\óÃàÊÇ≈ÇÕÇ»Ç≠ÅAy ÇÕè„ï˚å¸Ç™ê≥ÅjÇÕÅAQuickDraw É|Å[ÉgÇÃç¿ïWånÅiç∂è„ÇãNì_ÇΔǵÅAy ÇÕâ∫ï˚Ç™ê≥ÅjÇΔÇÕìØÇ∂Ç≈ÇÕǻǢDZÇΔÇ…íçà”ǵǃÇ≠ÇæÇ≥Ç¢ÅBÇ‹ÇΩÅACarbonLib 1.1 à»ç~Ç≈DZÇÍÇÁÇà API Ç™óòópâ¬î\Ç≈džÇÈÇΔǵǃLJÅAMac OS X 10.0 à»ëOÇÕ Quartz 2D ÇÕë∂ç›ÇµÇƒÇ¢Ç»Ç©Ç¡ÇΩÇÃÇ≈ÅAkPMGraphicsContextCoreGraphics ÇÃóvãÅÇÕÅAMac OS X Çé¿çsÇµÇƒÇ¢Ç»ÇØÇÍÇŒà”ñ°Ç™Ç†ÇËÇ‹ÇπÇÒÅBâ∫ãLÇÃÉäÉXÉg 1 ÇÕÅACarbon Printing Manager Reference Çà PMSessionSetDocumentFormatGeneration ÇÃÉZÉNÉVÉáÉìDždžÇÈÉRÅ[ÉhÇÃèCê≥î≈Ç≈Ç∑ÅB



ÉäÉXÉg 1. ÉvÉäÉìÉgÇÃÇΩÇflÇà CGContextRef ÇÃéÊìæ

    CFStringRef         strings[1];
    CFArrayRef          ourGraphicsContextsArray;
    CGContextRef        printingContext;
    OSErr               err = noErr;
    PMPrintSession      printSession;
    
    //
    // DZÇÃéûì_Ç≈ÇÕÅAÉvÉäÉìÉgÉZÉbÉVÉáÉìÇÕÇ∑Ç≈Ç…çÏê¨Ç≥ÇÍǃǢÇÈ
    //
    strings[0] = kPMGraphicsContextCoreGraphics; // DZÇÍÇÕèdóv
    ourGraphicsContextsArray = CFArrayCreate (kCFAllocatorDefault,
                        (const void **)strings,
                        1, &kCFTypeArrayCallBacks);
    if (ourGraphicsContextsArray != NULL)
    {
            err = PMSessionSetDocumentFormatGeneration (printSession,
                            kPMDocumentFormatPDF,
                            ourGraphicsContextsArray, NULL);
            CFRelease (ourGraphicsContextsArray);
    }
    
    //
    // í«â¡ÇÃÉvÉäÉìÉgÉãÅ[Év
    //
    
    //
    // éüÇ…ÅAPMSessionBeginDocument ÇΔ PMSessionBeginPage ÇåƒÇ—èoÇ∑
    //
    
    // ÉvÉäÉìÉgÉRÉìÉeÉLÉXÉgÇóvãÅÇ∑ÇÈèÄîıÇ™Ç≈ǴǃǢÇÈ
    err = PMSessionGetGraphicsContext (printSession,
        kPMGraphicsContextCoreGraphics, (void **) &printingContext);
        
    //
    // Quartz 2D Çégópǵǃ printingContext Ç…ÉRÉìÉeÉìÉcÇ
    // ÉåÉìÉ_ÉäÉìÉOǵǃÅAÉvÉäÉìÉgÉãÅ[ÉvÇë±çsÇ∑ÇÈ
    //


PMSessionSetDocumentFormatGeneration API ÇΔ PMSessionGetGraphicsContext API ÇÕÅuPMCore.hÅvÉwÉbÉ_ÉtÉ@ÉCÉãDždžÇËÇ‹Ç∑ÅBDZÇÍÇ…ëŒÇµÅAkPMGraphicsContextCoreGraphics íËêîÇÕÅuPMDefinitions.hÅvÉwÉbÉ_ÉtÉ@ÉCÉãDždžÇËÇ‹Ç∑ÅB


[2003 îN 2 åé 25 ì˙]